// 定义包路径，用于组织Java类的命名空间
package com.itheima.demo;

// 导入Random类，用于生成随机数
import java.util.Random;
// 导入Scanner类，用于从键盘获取用户输入
import java.util.Scanner;

// 定义一个名为Test2的公开类，用于实现猜数字游戏
public class Test2 {
    // 定义主方法，Java程序的入口点
    public static void main(String[] args) {
        // 目标：实现猜数字游戏
        // 调用guess方法开始游戏
        guess();
    }

    // 定义guess方法，用于实现猜数字游戏的核心逻辑
    public static void guess() {
        // 1、生成随机数： 1-100之间
        // 方式一（被注释掉）：
        // Math.random()返回[0,1)的随机小数
        // (int)Math.random() * 100 ==> [0, 100)的整数 => [0,99] + 1 => [1,100]
        // int num = (int)(Math.random() * 100) + 1;

        // 方式二（实际使用）
        // 创建Random类的对象r，用于生成随机数
        Random r = new Random(); // 得到一个随机数对象
        // 使用Random对象生成[0,99]的随机整数，然后加1得到[1,100]的随机整数
        int luckNumber = r.nextInt(100) + 1;   // [0, 99] + 1 => [1, 100]

        // 2、定义一个死循环让用户一直猜测，直到猜中才结束循环
        // 创建Scanner对象，用于从标准输入（键盘）读取用户输入
        Scanner sc = new Scanner(System.in);
        // 启动一个无限循环，只有当用户猜对时才会退出
        while (true) {
            // 3、让用户输入猜测的数字
            // 输出提示信息，让用户输入猜测的数字
            System.out.println("请输入猜测的数字：");
            // 从键盘读取用户输入的整数并存储到guessNumber变量
            int guessNumber = sc.nextInt();

            // 4、判断猜测的数字和随机数是否一致
            // 如果用户猜测的数字等于随机数
            if (guessNumber == luckNumber) {
                // 输出恭喜信息
                System.out.println("恭喜你，猜对了！");
                // 使用break语句跳出循环，结束游戏
                break;
            } 
            // 如果用户猜测的数字大于随机数
            else if (guessNumber > luckNumber) {
                // 提示用户猜大了
                System.out.println("猜大了！");
            }
            // 如果用户猜测的数字小于随机数
            else {
                // 提示用户猜小了
                System.out.println("猜小了！");
            }
        }
    }
}
